#leetcode题目67：二进制求和
#难度：简单

#方法：模拟

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        res=""
        i=len(a)-1
        j=len(b)-1
        carry=0
        while i>=0 or j>=0 or carry!=0:
            digitA=int(a[i]) if i>=0 else 0
            digitB=int(b[j]) if j>=0 else 0
            sumAB=digitA+digitB+carry
            if sumAB>=2:
                carry=1
                sumAB-=2
            else:
                carry=0
            i-=1
            j-=1
            res+=str(sumAB)#这里直接用+=而不是str(sumAB)+res是因为python的string是不可变的，如果是用原来的方法第一个case通不过


        return res[::-1]


#测试数据
a="11"
b="1"
#预期输出："100"
solution=Solution()
print(solution.addBinary(a,b))

a="1010"
b="1011"
#预期输出："10101"
solution=Solution()
print(solution.addBinary(a,b))